module pll_led #(
    parameter LED_PERIOD = 50_000_000
)
(
    input sys_clk,
    input sys_rst_n,
    
    output [3:0] led
);

//PLL IP核输出的时钟
wire clk0_200;
wire clk1_100;
wire clk2_50;
wire clk3_25;
//PLL IP核锁定信号，高有效
wire pll_lock;


//例化PLL IP核
pll u_pll_inst0 (
  .refclk(sys_clk),
  .clk0_out(clk0_200),
  .clk1_out(clk1_100),
  .clk2_out(clk2_50),
  .clk3_out(clk3_25),
  .lock(pll_lock),
  .pllreset(!sys_rst_n)
);

//例化LED闪烁模块，以pll_lock为复位信号，即需要等PLL IP锁定后才开始工作
led_flash#(
    .FLASH_PERIOD(LED_PERIOD)
)
u_led_flash_inst0(
    .sys_clk(clk0_200),
    .sys_rst_n(pll_lock),
    
    .led(led[0])
);

led_flash#(
    .FLASH_PERIOD(LED_PERIOD)
)
u_led_flash_inst1(
    .sys_clk(clk1_100),
    .sys_rst_n(pll_lock),
    
    .led(led[1])
);

led_flash#(
    .FLASH_PERIOD(LED_PERIOD)
)
u_led_flash_inst2(
    .sys_clk(clk2_50),
    .sys_rst_n(pll_lock),
    
    .led(led[2])
);

led_flash#(
    .FLASH_PERIOD(LED_PERIOD)
)
u_led_flash_inst3(
    .sys_clk(clk3_25),
    .sys_rst_n(pll_lock),
    
    .led(led[3])
);

endmodule
